From e0e46a4f6bf852d5ead8b8c015aa8eaf4e80599e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Mon, 17 Nov 2014 17:22:01 +0100 Subject: [PATCH] mir: update surface type based on events --- gdk/mir/gdkmir-private.h | 2 ++ gdk/mir/gdkmireventsource.c | 1 + gdk/mir/gdkmirwindowimpl.c | 17 +++++++++++++---- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/gdk/mir/gdkmir-private.h b/gdk/mir/gdkmir-private.h index 78e3ed3415..8305096241 100644 --- a/gdk/mir/gdkmir-private.h +++ b/gdk/mir/gdkmir-private.h @@ -61,6 +61,8 @@ GdkWindowImpl *_gdk_mir_window_impl_new (void); void _gdk_mir_window_impl_set_surface_state (GdkMirWindowImpl *impl, MirSurfaceState state); +void _gdk_mir_window_impl_set_surface_type (GdkMirWindowImpl *impl, MirSurfaceType type); + void _gdk_mir_window_impl_set_cursor_state (GdkMirWindowImpl *impl, gdouble x, gdouble y, gboolean cursor_inside, MirMotionButton button_state); void _gdk_mir_window_impl_get_cursor_state (GdkMirWindowImpl *impl, gdouble *x, gdouble *y, gboolean *cursor_inside, MirMotionButton *button_state); diff --git a/gdk/mir/gdkmireventsource.c b/gdk/mir/gdkmireventsource.c index 61ae346077..cfe36e8df5 100644 --- a/gdk/mir/gdkmireventsource.c +++ b/gdk/mir/gdkmireventsource.c @@ -343,6 +343,7 @@ handle_surface_event (GdkWindow *window, const MirSurfaceEvent *event) switch (event->attrib) { case mir_surface_attrib_type: + _gdk_mir_window_impl_set_surface_type (impl, event->value); break; case mir_surface_attrib_state: _gdk_mir_window_impl_set_surface_state (impl, event->value); diff --git a/gdk/mir/gdkmirwindowimpl.c b/gdk/mir/gdkmirwindowimpl.c index f5cf957124..418724be42 100644 --- a/gdk/mir/gdkmirwindowimpl.c +++ b/gdk/mir/gdkmirwindowimpl.c @@ -92,6 +92,12 @@ _gdk_mir_window_impl_set_surface_state (GdkMirWindowImpl *impl, MirSurfaceState impl->surface_state = state; } +void +_gdk_mir_window_impl_set_surface_type (GdkMirWindowImpl *impl, MirSurfaceType type) +{ + impl->surface_type = type; +} + void _gdk_mir_window_impl_set_cursor_state (GdkMirWindowImpl *impl, gdouble x, @@ -741,7 +747,6 @@ gdk_mir_window_impl_set_type_hint (GdkWindow *window, { case GDK_WINDOW_TYPE_HINT_NORMAL: case GDK_WINDOW_TYPE_HINT_DOCK: - case GDK_WINDOW_TYPE_HINT_TOOLBAR: case GDK_WINDOW_TYPE_HINT_DESKTOP: mir_type = mir_surface_type_normal; break; @@ -755,7 +760,7 @@ gdk_mir_window_impl_set_type_hint (GdkWindow *window, case GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU: case GDK_WINDOW_TYPE_HINT_POPUP_MENU: case GDK_WINDOW_TYPE_HINT_COMBO: - mir_type = mir_surface_type_popover; + mir_type = mir_surface_type_menu; break; case GDK_WINDOW_TYPE_HINT_TOOLTIP: mir_type = mir_surface_type_tip; @@ -765,6 +770,9 @@ gdk_mir_window_impl_set_type_hint (GdkWindow *window, case GDK_WINDOW_TYPE_HINT_NOTIFICATION: mir_type = mir_surface_type_overlay; break; + case GDK_WINDOW_TYPE_HINT_TOOLBAR: + mir_type = mir_surface_type_satellite; + break; } set_surface_type (GDK_MIR_WINDOW_IMPL (window->impl), mir_type); @@ -780,7 +788,6 @@ gdk_mir_window_impl_get_type_hint (GdkWindow *window) case mir_surface_type_normal: case mir_surface_type_freestyle: case mir_surface_type_inputmethod: - case mir_surface_type_satellite: return GDK_WINDOW_TYPE_HINT_NORMAL; case mir_surface_type_utility: return GDK_WINDOW_TYPE_HINT_UTILITY; @@ -788,10 +795,12 @@ gdk_mir_window_impl_get_type_hint (GdkWindow *window) return GDK_WINDOW_TYPE_HINT_DIALOG; case mir_surface_type_tip: return GDK_WINDOW_TYPE_HINT_TOOLTIP; - case mir_surface_type_popover: + case mir_surface_type_menu: return GDK_WINDOW_TYPE_HINT_MENU; case mir_surface_type_overlay: return GDK_WINDOW_TYPE_HINT_NOTIFICATION; + case mir_surface_type_satellite: + return GDK_WINDOW_TYPE_HINT_TOOLBAR; case mir_surface_types: break; } -- 2.30.2